home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / source / snip9503 / textmod.c < prev    next >
C/C++ Source or Header  |  1995-03-14  |  2KB  |  105 lines

  1. /*
  2. **  TEXTMOD.C - Demonstrates techniques for modifying text files
  3. **
  4. **  public domain demo by Bob Stout
  5. */
  6.  
  7. #include <stdio.h>
  8. #include <string.h>
  9.  
  10. void show_text_file(char *txt)
  11. {
  12.       FILE *in;
  13.       char line[80];
  14.  
  15.       in = fopen("test.txt", "r");
  16.       printf("\n%s:\n\n", txt);
  17.  
  18.       while (!feof(in))
  19.       {
  20.             if (NULL != fgets(line, 80, in))
  21.                   fputs(line, stdout);
  22.       }
  23. }
  24.  
  25. void create_text_file(void)
  26. {
  27.       FILE *out;
  28.  
  29.       out = fopen("test.txt", "w");
  30.       fputs("This is a test!\n", out);
  31.       fputs("This is a dummy line to delete...\n", out);
  32.       fputs("This is a dummy line to modify...\n", out);
  33.       fputs("All done!\n", out);
  34.       fclose(out);
  35.  
  36.       show_text_file("The file as written is");
  37. }
  38.  
  39. main()
  40. {
  41.       FILE *in, *out;
  42.       char line[80], *tmp, *ptr;
  43.  
  44.       /*
  45.       **  Open the original file for reading and a temporary file for writing
  46.       */
  47.  
  48.       create_text_file();
  49.       in  = fopen("test.txt", "r");
  50.       tmp = tmpnam(NULL);
  51.       out = fopen(tmp, "w");
  52.  
  53.       /*
  54.       **  Read the first line and copy it
  55.       */
  56.  
  57.       fgets(line, 80, in);
  58.       fputs(line, out);
  59.  
  60.       /*
  61.       **  Discard the second line
  62.       */
  63.  
  64.       fgets(line, 80, in);
  65.  
  66.       /*
  67.       **  Add a new line
  68.       */
  69.  
  70.       fputs("(Isn't it?)\n", out);
  71.  
  72.       /*
  73.       **  Read the 3rd line, modify it, then write it out
  74.       */
  75.  
  76.       fgets(line, 80, in);
  77.       ptr = strrchr(line, 'm');
  78.       strcpy(ptr, "edit...\n");
  79.       fputs(line, out);
  80.  
  81.       /*
  82.       **  Read the last line and copy it
  83.       */
  84.  
  85.       fgets(line, 80, in);
  86.       fputs(line, out);
  87.  
  88.       /*
  89.       **  Close the files, delete the old, rename the temp
  90.       */
  91.  
  92.       fclose(in);
  93.       fclose(out);
  94.       remove("test.txt");
  95.       rename(tmp, "test.txt");
  96.  
  97.       /*
  98.       **  Now let's see the results
  99.       */
  100.  
  101.       show_text_file("The file as modified is");
  102.       
  103.       return 0;
  104. }
  105.